<?php

namespace Sistema\AdminBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * Sistema\AdminBundle\Entity\Equipo
 *
 * @ORM\Table(name="Equipo")
 * @ORM\Entity
 * @UniqueEntity({"idCategoria", "idClub"})
 */
class Equipo
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="bigint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="Grupo", inversedBy="idEquipo")
     * @ORM\JoinTable(name="Equipo_inscripto_grupo_torneo",
     *   joinColumns={
     *     @ORM\JoinColumn(name="id_equipo", referencedColumnName="id", onDelete="CASCADE")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="id_grupo", referencedColumnName="id", onDelete="CASCADE")
     *   }
     * )
     */
    private $idGrupo;

    /**
     * @var Categoria
     *
     * @ORM\ManyToOne(targetEntity="Categoria")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_categoria", referencedColumnName="id")
     * })
     */
    private $idCategoria;

    /**
     * @var Club
     *
     * @ORM\ManyToOne(targetEntity="Club")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_club", referencedColumnName="id", onDelete="CASCADE")
     * })
     */
    private $idClub;
    
    /**
     * @ORM\OneToMany(targetEntity="PartidoDeEquipo", mappedBy="idEquipo", cascade={"remove"})
     */
    private $idPartido;
    
    /**
     * @ORM\OneToMany(targetEntity="Jugador", mappedBy="idEquipo", cascade={"remove"})
     */
    private $idJugador;
    
    /**
     * @ORM\OneToMany(targetEntity="CuerpoTecnico", mappedBy="idEquipo", cascade={"remove"})
     */
    private $idCuerpoTecnico;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->idGrupo = new \Doctrine\Common\Collections\ArrayCollection();
    }

    public function __toString()
    {
        return $this->getIdClub()->getNombre().' - '.$this->getIdCategoria()->getNombre();
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Add idGrupo
     *
     * @param Sistema\AdminBundle\Entity\Grupo $idGrupo
     * @return Equipo
     */
    public function addIdGrupo(\Sistema\AdminBundle\Entity\Grupo $idGrupo)
    {
        $this->idGrupo[] = $idGrupo;
    
        return $this;
    }

    /**
     * Remove idGrupo
     *
     * @param Sistema\AdminBundle\Entity\Grupo $idGrupo
     */
    public function removeIdGrupo(\Sistema\AdminBundle\Entity\Grupo $idGrupo)
    {
        $this->idGrupo->removeElement($idGrupo);
    }

    /**
     * Get idGrupo
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdGrupo()
    {
        return $this->idGrupo;
    }

    /**
     * Set idCategoria
     *
     * @param Sistema\AdminBundle\Entity\Categoria $idCategoria
     * @return Equipo
     */
    public function setIdCategoria(\Sistema\AdminBundle\Entity\Categoria $idCategoria = null)
    {
        $this->idCategoria = $idCategoria;
    
        return $this;
    }

    /**
     * Get idCategoria
     *
     * @return Sistema\AdminBundle\Entity\Categoria 
     */
    public function getIdCategoria()
    {
        return $this->idCategoria;
    }

    /**
     * Set idClub
     *
     * @param Sistema\AdminBundle\Entity\Club $idClub
     * @return Equipo
     */
    public function setIdClub(\Sistema\AdminBundle\Entity\Club $idClub = null)
    {
        $this->idClub = $idClub;
    
        return $this;
    }

    /**
     * Get idClub
     *
     * @return Sistema\AdminBundle\Entity\Club 
     */
    public function getIdClub()
    {
        return $this->idClub;
    }

    /**
     * Add idPartido
     *
     * @param Sistema\AdminBundle\Entity\PartidoDeEquipo $idPartido
     * @return Equipo
     */
    public function addIdPartido(\Sistema\AdminBundle\Entity\PartidoDeEquipo $idPartido)
    {
        $this->idPartido[] = $idPartido;
    
        return $this;
    }

    /**
     * Remove idPartido
     *
     * @param Sistema\AdminBundle\Entity\PartidoDeEquipo $idPartido
     */
    public function removeIdPartido(\Sistema\AdminBundle\Entity\PartidoDeEquipo $idPartido)
    {
        $this->idPartido->removeElement($idPartido);
    }

    /**
     * Get idPartido
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdPartido()
    {
        return $this->idPartido;
    }

    /**
     * Add idJugador
     *
     * @param Sistema\AdminBundle\Entity\Jugador $idJugador
     * @return Equipo
     */
    public function addIdJugador(\Sistema\AdminBundle\Entity\Jugador $idJugador)
    {
        $this->idJugador[] = $idJugador;
    
        return $this;
    }

    /**
     * Remove idJugador
     *
     * @param Sistema\AdminBundle\Entity\Jugador $idJugador
     */
    public function removeIdJugador(\Sistema\AdminBundle\Entity\Jugador $idJugador)
    {
        $this->idJugador->removeElement($idJugador);
    }

    /**
     * Get idJugador
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdJugador()
    {
        return $this->idJugador;
    }

    /**
     * Add idCuerpoTecnico
     *
     * @param Sistema\AdminBundle\Entity\CuerpoTecnico $idCuerpoTecnico
     * @return Equipo
     */
    public function addIdCuerpoTecnico(\Sistema\AdminBundle\Entity\CuerpoTecnico $idCuerpoTecnico)
    {
        $this->idCuerpoTecnico[] = $idCuerpoTecnico;
    
        return $this;
    }

    /**
     * Remove idCuerpoTecnico
     *
     * @param Sistema\AdminBundle\Entity\CuerpoTecnico $idCuerpoTecnico
     */
    public function removeIdCuerpoTecnico(\Sistema\AdminBundle\Entity\CuerpoTecnico $idCuerpoTecnico)
    {
        $this->idCuerpoTecnico->removeElement($idCuerpoTecnico);
    }

    /**
     * Get idCuerpoTecnico
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdCuerpoTecnico()
    {
        return $this->idCuerpoTecnico;
    }
}